package com.titanrise.crm.service;

import com.titanrise.crm.domain.dto.TradeDto;
import com.titanrise.crm.domain.dto.UserDto;
import com.titanrise.crm.domain.model.SysLoginLog;
import com.titanrise.crm.domain.model.Trade;
import com.titanrise.crm.environment.menu.action.Action;

import java.sql.SQLException;
import java.util.List;

/**
 * @Description:
 * @Author: pront
 * @Time:2024-11-08 08:35
 */
public interface RootService {


    /**
     * 显示所有成员信息
     * @return 所有成员集合
     */
    List<UserDto> showAllMembers();

    /**
     * 更新用户名与密码
     * @return action
     */
    Action updateUsnaPasByNo();


    /**
     * 更新销售人员
     * @return action
     */
    Action addSalesperson();

    /**
     * 删除销售人员账号
     * @return action
     */
    Action deleteSalesperson();


    /**
     * 显示所有交易信息
     * @return 所有交易集合
     */
    List<TradeDto> showAllTrades();

    /**
     * 删除交易信息
     * @return action
     */
    Action deleteTrade();

    /**
     * 查看系统登录日志
     * @param timeLine 时间线
     * @param page 当前页码
     * @return action
     */
    List<SysLoginLog> sysLoginLog(int timeLine, int page);

    /**
     * 查看系统登录日志总数
     * @param timeLine 时间线
     * @return action
     */
    int sysLoginLogCount(int timeLine);

    /**
     * 以合适的格式输出系统登录日志到控制台
     * @param sysLoginLogs 系统登录日志集合
     */
    void showSysLoginLogs(List<SysLoginLog> sysLoginLogs);

    /**
     * 展示客户所属关系
     * @return action
     */
    Action showSalespersonOfClient();

    /**
     * 发送消息给销售人员
     * @return action
     */
    Action sendMsgToSalesperson();

    /**
     * 为销售人员分配客户
     * @return action
     */
    Action distributeClient();

    /**
     * 查看销售业绩表
     * @return action
     */
    Action tradeTable();

    /**
     * 导出交易数据
     * @return action
     */
    Action exportTradeData() throws InterruptedException;
}
